Java Technologies String Buffer এবং StringBuilder Example: Mutable String এর ব্যবহার গাইড ও নোট

430

Java StringBuffer এবং StringBuilder দুটি ক্লাস, যা mutable strings তৈরি করতে ব্যবহৃত হয়। মানে, আপনি একে পরিবর্তন (modify) করতে পারেন। সাধারণভাবে, String ক্লাস একটি immutable ক্লাস, যার মানে হল যে একবার একটি String অবজেক্ট তৈরি হলে, সেটির মান পরিবর্তন করা সম্ভব নয়। কিন্তু StringBuffer এবং StringBuilder এর মাধ্যমে আপনি একটি স্ট্রিংয়ের মান পরিবর্তন করতে পারেন। তারা অনেক কার্যকরী যখন বার বার স্ট্রিং পরিবর্তন করা হয়, কারণ এতে memory overhead কম থাকে এবং কার্যকারিতা বেশি হয়।

StringBuffer এবং StringBuilder এর মধ্যে পার্থক্য:

  • StringBuffer: এটি সিঙ্ক্রোনাইজড, অর্থাৎ একাধিক থ্রেড একে একযোগে অ্যাক্সেস করতে পারবে না। এটি thread-safe, কিন্তু এর কার্যক্ষমতা কিছুটা কম হতে পারে যখন আপনি একাধিক থ্রেড ব্যবহার করেন।
  • StringBuilder: এটি সিঙ্ক্রোনাইজড নয়, অর্থাৎ একাধিক থ্রেড একে একযোগে অ্যাক্সেস করলে এটি নিরাপদ নাও হতে পারে। তবে, এটি সাধারণত ফাস্ট, কারণ এটি অতিরিক্ত সিঙ্ক্রোনাইজেশন চেকের প্রয়োজন হয় না।

StringBuffer এবং StringBuilder Example:

1. StringBuffer Example:

public class StringBufferExample {
    public static void main(String[] args) {
        // StringBuffer ব্যবহার
        StringBuffer sb = new StringBuffer("Hello");
        
        // StringBuffer এ কিছু পরিবর্তন করা
        sb.append(" World!");  // স্ট্রিং এর শেষে নতুন টেক্সট যোগ করা
        System.out.println("After append: " + sb);

        sb.insert(5, ",");     // স্ট্রিং এর মধ্যে কমা ইনসার্ট করা
        System.out.println("After insert: " + sb);

        sb.replace(6, 11, "Java");  // 6 থেকে 11 পর্যন্ত অংশ বদলে "Java" সেট করা
        System.out.println("After replace: " + sb);

        sb.delete(5, 6);  // কমা মুছে ফেলা
        System.out.println("After delete: " + sb);

        sb.reverse();  // স্ট্রিংটি উল্টানো
        System.out.println("After reverse: " + sb);
    }
}

Output:

After append: Hello World!
After insert: Hello, World!
After replace: Hello, Java!
After delete: Hello Java!
After reverse: !avaJ olleH

Code Explanation:

  • append(): এটি স্ট্রিংয়ের শেষে নতুন ডেটা যোগ করে।
  • insert(): এটি স্ট্রিংয়ের নির্দিষ্ট অবস্থানে নতুন ডেটা যোগ করে।
  • replace(): এটি স্ট্রিংয়ের একটি অংশকে অন্য অংশ দিয়ে প্রতিস্থাপন করে।
  • delete(): এটি স্ট্রিংয়ের নির্দিষ্ট একটি অংশ মুছে দেয়।
  • reverse(): এটি স্ট্রিংটি উল্টে দেয়।

2. StringBuilder Example:

public class StringBuilderExample {
    public static void main(String[] args) {
        // StringBuilder ব্যবহার
        StringBuilder sb = new StringBuilder("Good");

        // StringBuilder এ কিছু পরিবর্তন করা
        sb.append(" Morning!");  // স্ট্রিং এর শেষে নতুন টেক্সট যোগ করা
        System.out.println("After append: " + sb);

        sb.insert(4, ",");       // স্ট্রিং এর মধ্যে কমা ইনসার্ট করা
        System.out.println("After insert: " + sb);

        sb.replace(5, 9, "Evening");  // 5 থেকে 9 পর্যন্ত অংশ বদলে "Evening" সেট করা
        System.out.println("After replace: " + sb);

        sb.delete(4, 5);         // কমা মুছে ফেলা
        System.out.println("After delete: " + sb);

        sb.reverse();            // স্ট্রিংটি উল্টানো
        System.out.println("After reverse: " + sb);
    }
}

Output:

After append: Good Morning!
After insert: Good, Morning!
After replace: Good, Evening!
After delete: Good Evening!
After reverse: !gninE dooG

Code Explanation:

  • append(): StringBuilder এ টেক্সট যোগ করার জন্য ব্যবহৃত হয়।
  • insert(): নির্দিষ্ট একটি অবস্থানে নতুন টেক্সট ইনসার্ট করতে ব্যবহৃত হয়।
  • replace(): নির্দিষ্ট একটি অংশে পরিবর্তন করতে ব্যবহৃত হয়।
  • delete(): নির্দিষ্ট একটি অংশ মুছে ফেলার জন্য ব্যবহৃত হয়।
  • reverse(): টেক্সট উল্টানোর জন্য ব্যবহৃত হয়।

StringBuffer vs StringBuilder:

  • StringBuffer সাধারণত সিঙ্ক্রোনাইজড এবং থ্রেড-সেফ, তবে এটি কিছুটা ধীর হতে পারে কারণ সিঙ্ক্রোনাইজেশন প্রয়োগ করা হয়।
  • StringBuilder সিঙ্ক্রোনাইজড নয়, তবে এটি কম সময়ে কাজ করে যদি একক থ্রেড ব্যবহার করা হয়, কারণ সিঙ্ক্রোনাইজেশন ট্যাক্স না থাকে।

When to Use StringBuffer and StringBuilder:

  1. Thread-Safety Required: যদি আপনি একটি মাল্টি-থ্রেডেড পরিবেশে কাজ করছেন যেখানে একাধিক থ্রেড একই StringBuffer অবজেক্টে অ্যাক্সেস করতে পারে, তবে StringBuffer ব্যবহার করুন।
  2. Single-threaded Environment: যদি আপনি শুধুমাত্র এক থ্রেড ব্যবহার করছেন, তবে StringBuilder ব্যবহার করা উচিত কারণ এটি দ্রুত কাজ করে এবং কম মেমরি ব্যবহার করে।
  • StringBuffer এবং StringBuilder উভয়ই mutable strings তৈরি করতে ব্যবহৃত হয়।
  • StringBuffer থ্রেড-সেফ, কিন্তু StringBuilder কম সময়ে কার্যকরী, বিশেষত একক থ্রেডের জন্য।
  • এগুলি memory efficiency এবং performance উন্নত করতে ব্যবহৃত হয়, বিশেষত যখন একটি স্ট্রিং বার বার পরিবর্তন করতে হয়।
Content added By
Promotion

Are you sure to start over?

Loading...